Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

100
Visualizações
Si declaración con múltiples || condiciones

Estoy recorriendo una serie de objetos y tratando de ver si hay una mejor manera de escribir esto (siento que la hay).

Esta es mi función a continuación.

 getCallInfo = (callSch: any, security: any) => { const callObj = { CallTimingType: 'Not Callable', isCheckMark: null, }; if (!security.IsCallable) return callObj; callSch.Calls.forEach((el: { CallTimingType: string }) => { if (el.CallTimingType === CallTimingType.SpecificDates) { callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; } if ( el.CallTimingType === CallTimingType.AnyTime || el.CallTimingType === CallTimingType.Monthly || el.CallTimingType === CallTimingType.OnPaymentDates || el.CallTimingType === CallTimingType.AnyInterestAdjustmentDate ) { callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; } }); return callObj; };

básicamente, lo que está haciendo es devolver el objeto predeterminado si security.IsCallable es falso pero si es verdadero, recorrer la matriz de objetos y establecer el objeto predeterminado en diferentes valores. Lo que básicamente estoy haciendo es tratar de refactorizar esto. CallTimingType es un objeto con estos valores de enumeración. ¿Alguna idea?

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Podría usar Array.prototype.some() para iterar y probar si el.CallTimingType coincide con algún valor.

 if ( el.CallTimingType === CallTimingType.AnyTime || el.CallTimingType === CallTimingType.Monthly || el.CallTimingType === CallTimingType.OnPaymentDates || el.CallTimingType === CallTimingType.AnyInterestAdjustmentDate )

Se puede reescribir como:

 const callTimingTypes = [ CallTimingType.AnyTime, CallTimingType.Monthly, CallTimingType.OnPaymentDates, CallTimingType.AnyInterestAdjustmentDate ]; if (callTimingTypes.some((t) => el.CallTimingType === t))
about 4 years ago · Santiago Trujillo Relatório

0

Puede reescribir su cláusula con el operador de switch case para que quede claro:

 callSch.Calls.forEach((el: { CallTimingType: string }) => { switch (el.CallTimingType) { case CallTimingType.SpecificDates: callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; break; case CallTimingType.AnyTime: case CallTimingType.Monthly: case CallTimingType.OnPaymentDates: case CallTimingType.AnyInterestAdjustmentD: callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; break; } });

Alternativamente, puede usar Set :

 callSch.Calls.forEach((el: { CallTimingType: string }) => { const discreteSet = new Set([CallTimingType.SpecificDates]); const continuousSet = new Set([ CallTimingType.AnyTime, CallTimingType.Monthly, CallTimingType.OnPaymentDates, CallTimingType.AnyInterestAdjustmentD, ]); if (discreteSet.has(el.CallTimingType)) { callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; } else if (continuousSet.has(el.CallTimingType)) { callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; } });
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda